package java学习.第15章_File类与IO流;

import org.junit.Test;

import java.io.*;

public class K_标准输入输出流 {
    /**
     * 标准的输入流
     *
     * 标准的输出流
     * ●System.in和System.out分 别代表了系统标准的输入和输出设备
     * ●默认输入设备是:键盘，输出设备是:显示器
     * ●System.in的类 型是InputStream
     * ●System.out的类 型是PrintStream,其是OutputStream的子类
     * FilterOutputStream的子类
     * ●重定向: 通过System类的setlIn, setOut方法对默认设备进行改变。
     * ➢ public static void setIn(InputStream in)
     * ➢ public static void setOut(PrintStream out)
     *
     * 方法一：使用Scanner实现，调用next()返回一个字符串
     * 方法二：使用System.in实现。
     *      System.in  --->  转换流 ---> BufferedReader的readLine()
     *
     */
    @Test
    public void 标准的输入输出流() {

        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            InputStreamReader isr = new InputStreamReader(System.in);
            br = new BufferedReader(isr);
            OutputStreamWriter osw = new OutputStreamWriter(System.out);
            bw = new BufferedWriter(osw);
            while (true){
                System.out.println("请输入字符串");

                String data = br.readLine();
                if("e".equalsIgnoreCase(data)||"exit".equalsIgnoreCase(data)){
                    System.out.println("程序结束");
                    break;
                }else {
                    bw.write(data);
//                    bw.flush();//及时刷入内存
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
